package com.zx.task.manager.service;

import com.zx.core.wrapper.ObjectWrapper;
import com.zx.core.wrapper.PageWrapper;
import com.zx.core.wrapper.ResponseWrapper;
import com.zx.task.manager.param.TasksParam;
import com.zx.task.manager.vo.TasksVO;

/**
 * <p>
 * description: 任务服务接口 <br>
 * create: 2025-10-13 20:08
 * </p>
 *
 * @author zhou  xun
 */
public interface ITasksService {

    /**
     * 分页查询任务列表VO
     *
     * @param tasksParam 任务查询参数
     * @return {@link PageWrapper<TasksVO>}
     * @author zhou  xun
     * @since 2025-10-13
     */
    PageWrapper<TasksVO> getTasksVOListByPage(TasksParam tasksParam);

    /**
     * 新增任务
     *
     * @param tasksParam 任务参数
     * @return {@link ResponseWrapper}
     * @author zhou  xun
     * @since 2025-10-13
     */
    ResponseWrapper addTask(TasksParam tasksParam);

    /**
     * 编辑任务
     *
     * @param tasksParam 任务参数
     * @return {@link ResponseWrapper}
     * @author zhou  xun
     * @since 2025-10-13
     */
    ResponseWrapper editTask(TasksParam tasksParam);

    /**
     * 删除任务
     *
     * @param taskId 任务id
     * @return {@link ResponseWrapper}
     * @author zhou  xun
     * @since 2025-10-13
     */
    ResponseWrapper deleteTask(String taskId);

    /**
     * 根据ID查询任务信息
     *
     * @param taskId 任务id
     * @return {@link ObjectWrapper<TasksVO>}
     * @author zhou  xun
     * @since 2025-10-13
     */
    ObjectWrapper<TasksVO> selectTaskById(String taskId);

    /**
     * 发布任务
     *
     * @param tasksParam 任务参数
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper publishTask(TasksParam tasksParam);

    /**
     * 签收任务
     *
     * @param tasksParam 任务参数
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper claimTask(TasksParam tasksParam);

    /**
     * 更新任务进度
     *
     * @param tasksParam 任务参数
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper updateProgress(TasksParam tasksParam);

    /**
     * 完成任务
     *
     * @param tasksParam 任务参数
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper completeTask(TasksParam tasksParam);

    /**
     * 关闭任务
     *
     * @param tasksParam 任务参数
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper closeTask(TasksParam tasksParam);

    /**
     * 取消任务
     *
     * @param tasksParam 任务参数
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper cancelTask(TasksParam tasksParam);

    /**
     * 转派任务
     *
     * @param tasksParam 任务参数
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper reassignTask(TasksParam tasksParam);


}